package com.robsonximenes.grana.view.util;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.faces.model.SelectItem;

public final class JsfRenderUtil {

	@SuppressWarnings("unchecked")
	public static List<SelectItem> extractEnumItens(Object managedBean, String enumName) {
		List<SelectItem> list = new ArrayList<SelectItem>();
		Field field = null;
		try {
			field = managedBean.getClass().getDeclaredField(enumName);
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		}
		if (field.getType().isEnum()) {
			List<?> enumItens = (List<?>) Arrays.asList(field.getType().getEnumConstants());
			for (Object item : enumItens) {
				if(item.getClass().isEnum()){
					Enum enumItem = (Enum) item;
					list.add(new SelectItem(enumItem, enumItem.name()));
				}
			}
		}
		return list;
	}
}
